
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;

/*
 * To change this template, choose Tools | Templates and open the template in
 * the editor.
 */
/**
 *
 * @author enrico
 */
public class AggiungiLibroView extends GridPane {

    private TextField titoloField = new TextField();
    private TextField sottotitoloField = new TextField();
    private TextField autoreField = new TextField();
    private TextField editoreField = new TextField();
    private TextField annoField = new TextField();
    private TextField scField = new TextField();
    private TextField prscField = new TextField();
    private TextField prField = new TextField();
    private TextField undField = new TextField();
    private TextField quantitaField = new TextField();
    private RadioButton sez1 = new RadioButton("I "), sez2 = new RadioButton("II "), sez3 = new RadioButton("III "), sez4 = new RadioButton("IV ");
    private RadioButton sez5 = new RadioButton("DG "), sez6 = new RadioButton("ANVGD "), sez7 = new RadioButton("VII "), sez8 = new RadioButton("VIII");
    private ToggleGroup group = new ToggleGroup();
    private Button aggiungiButton, deleteButton;
    private boolean emptyAutore = true, emptyTitolo = true, emptyQuantita = true;
    private AggiungiLibroController controller;

    public AggiungiLibroView(int section, AggiungiLibroController contro) {

        controller = contro;
        Text quantita = new Text("Quantità");
        Text titolo = new Text("Titolo");
        Text sottoTitolo = new Text("Sottotitolo");
        Text autore = new Text("Autore");
        Text editore = new Text("Editore");
        Text anno = new Text("Anno");
        Text sezione = new Text("Sezione");
        Text sc = new Text("SC");
        Text prsc = new Text("PRSC");
        Text pr = new Text("PR");
        Text und = new Text("Und");

        this.setHgap(8);
        this.setVgap(4);
        this.setId("aggiungiGrid");

        scField.setPrefWidth(50);
        prscField.setPrefWidth(50);
        prField.setPrefWidth(50);
        undField.setPrefWidth(50);
        quantitaField.setPrefWidth(50);
        titoloField.setPrefWidth(250);

        autoreField.setOnKeyReleased(new EventHandler<KeyEvent>() {
            @Override
            public void handle(KeyEvent arg0) {
                if (autoreField.getText().trim().isEmpty()) {
                    emptyAutore = true;
                } else {
                    emptyAutore = false;
                }

                checkPulsante();
            }
        });
        titoloField.setOnKeyReleased(new EventHandler<KeyEvent>() {
            @Override
            public void handle(KeyEvent arg0) {
                if (titoloField.getText().trim().isEmpty()) {
                    emptyTitolo = true;
                } else {
                    emptyTitolo = false;
                }

                checkPulsante();
            }
        });

        quantitaField.setOnKeyReleased(new EventHandler<KeyEvent>() {
            @Override
            public void handle(KeyEvent arg0) {


                try {
                    int q = Integer.valueOf(quantitaField.getText());
                    emptyQuantita = false;
                    if (q < 1) {
                        emptyQuantita = true;
                    }
                } catch (NumberFormatException nfe) {
                    emptyQuantita = true;
                }

                if (quantitaField.getText().trim().isEmpty()) {
                    emptyTitolo = true;
                } else {
                    emptyTitolo = false;
                }
                checkPulsante();
            }
        });

        aggiungiButton = new Button("Aggiungi", new ImageView(new Image(getClass().getResourceAsStream("Stili/plus.png"))));
        aggiungiButton.setId("green");
        aggiungiButton.setDisable(true);
        aggiungiButton.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent arg0) {
                int sezione;
                if (sez1.isSelected()) {
                    sezione = 1;
                } else if (sez2.isSelected()) {
                    sezione = 2;
                } else if (sez3.isSelected()) {
                    sezione = 3;
                } else if (sez4.isSelected()) {
                    sezione = 4;
                } else if (sez5.isSelected()) {
                    sezione = 5;
                } else if (sez6.isSelected()) {
                    sezione = 6;
                } else if (sez7.isSelected()) {
                    sezione = 7;
                } else if (sez8.isSelected()) {
                    sezione = 8;
                } else {
                    sezione = 0;
                }
                try {
                    controller.aggiungiLibro(String.valueOf(sezione), titoloField.getText(), sottotitoloField.getText(), autoreField.getText(), editoreField.getText(), annoField.getText(), scField.getText(), prscField.getText(), prField.getText(), undField.getText(), quantitaField.getText());
                } catch (ClassNotFoundException ex) {
                    Logger.getLogger(AggiungiLibroView.class.getName()).log(Level.SEVERE, null, ex);
                } catch (SQLException ex) {
                    Logger.getLogger(AggiungiLibroView.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });

        deleteButton = new Button("Annulla", new ImageView(new Image(getClass().getResourceAsStream("Stili/delete.png"))));
        deleteButton.setId("round-red");

        HBox hb = new HBox();
        hb.getChildren().addAll(sez1, sez2, sez3, sez4, sez5, sez6, sez7, sez8);
        sez1.setToggleGroup(group);
        sez2.setToggleGroup(group);
        sez3.setToggleGroup(group);
        sez4.setToggleGroup(group);
        sez5.setToggleGroup(group);
        sez6.setToggleGroup(group);
        sez7.setToggleGroup(group);
        sez8.setToggleGroup(group);

        switch (section) {
            case 1:
                sez1.setSelected(true);
                break;
            case 2:
                sez2.setSelected(true);
                break;
            case 3:
                sez3.setSelected(true);
                break;
            case 4:
                sez4.setSelected(true);
                break;
            case 5:
                sez5.setSelected(true);
                break;
            case 6:
                sez6.setSelected(true);
                break;
            case 7:
                sez7.setSelected(true);
                break;
            case 8:
                sez8.setSelected(true);
                break;

        }

        this.add(sezione, 0, 0);
        this.add(titolo, 0, 1);
        this.add(sottoTitolo, 0, 2);
        this.add(autore, 0, 3);
        this.add(editore, 0, 4);
        this.add(anno, 0, 5);
        this.add(sc, 2, 0);
        this.add(prsc, 2, 1);
        this.add(pr, 2, 2);
        this.add(und, 2, 3);
        this.add(quantita, 2, 4);
        this.add(aggiungiButton, 2, 5, 2, 2);
        this.add(deleteButton, 4, 5, 1, 1);
        this.add(hb, 1, 0);
        this.add(titoloField, 1, 1);
        this.add(sottotitoloField, 1, 2);
        this.add(autoreField, 1, 3);
        this.add(editoreField, 1, 4);
        this.add(annoField, 1, 5);
        this.add(scField, 3, 0);
        this.add(prscField, 3, 1);
        this.add(prField, 3, 2);
        this.add(undField, 3, 3);
        this.add(quantitaField, 3, 4);
    }

    public Button getAddButton() {
        return aggiungiButton;
    }

    public Button getRemoveButton() {
        return deleteButton;
    }

    private void checkPulsante() {
        if (emptyAutore == false && emptyTitolo == false && emptyQuantita == false) {
            aggiungiButton.setDisable(false);
        } else {
            aggiungiButton.setDisable(true);
        }
    }
}
